package com.sxj.corejava.code20_动态代理;

import java.lang.reflect.Proxy;

public class Test {

    public static void main(String[] args) {
        // 参数一:定义代理的目标类的类加载器
        // 参数二:代理的目标类要实现的接口列表
        // 参数三:指派方法调用的调用处理程序,即:代理方法
        UserService userService = (UserService) Proxy.newProxyInstance(
                UserServiceImpl.class.getClassLoader(),
                UserServiceImpl.class.getInterfaces(),
                new LogInvocationHandler(new UserServiceImpl())
        );
        userService.login("admin", "123456");
        System.out.println("*******************************************");
        userService.register("admin", "123");
        System.out.println("*******************************************");
        ProductService productService = (ProductService) Proxy.newProxyInstance(
                ProductServiceImpl.class.getClassLoader(),
                ProductServiceImpl.class.getInterfaces(),
                new LogInvocationHandler(new ProductServiceImpl())
        );
        productService.findAll();
        System.out.println("*******************************************");
        productService.addProduct();
        System.out.println("*******************************************");
        productService.modifyProduct();
        System.out.println("*******************************************");
        productService.deleteProduct();
    }

}
